LLM Agent 在多模态任务中如何执行推理?
多模态 Agent 的推理仍是 ReAct 闭环——差别在「感知」与「观察」不只有文本:图像、截图、音频、视频帧、PDF 页等会进入上下文或经工具转成可推理信号。本篇讲面试答法;循环模型见 Agent 核心概念与架构;浏览器截图工具链见 [OpenManus 概览与实现原理](/docs/ai/Agent/面试/OpenManus 概览与实现原理);多模态 token 见 Token 计算与成本。
先定边界:多模态推理 ≠ 只换 Vision 模型
| 维度 | 纯文本 Agent | 多模态 Agent |
|---|---|---|
| 输入 | 用户文本 + 工具 JSON | 另加图片/文件/屏幕/语音 |
| 感知 | 读库、检索、API | 另加 看、听、截屏、OCR |
| 推理载体 | 文本 CoT + tool call | 同一套;观察可能是 图+文 |
| 行动 | HTTP、代码、DB | 另加 点坐标、浏览器、画框、TTS |
面试一句话:推理结构不变(规划→行动→观察);变的是感知编码与工具链,以及何时用原生 VLM、何时用专用感知工具。
标准闭环(多模态版)
用户:文字 +(可选)图片/文件/「帮我看屏幕」
↓
感知:VLM 直接读图 │ 或 tool 产出 screenshot / OCR / ASR 文本
↓
规划(think):结合视觉观察 + 文本 state,决定下一步 tool 或直接答
↓
行动(act):browser_click、crop、查库、生成代码…
↓
观察:工具返回文本 │ 或 新截图/base64 图 │ 或 结构化检测结果
↓
回灌 Memory → 下一轮 think(直到 Terminate / max_steps)
与文本 Agent 相同:观察必须回灌,否则下一轮是盲的。OpenManus 等框架会把工具返回的 base64_image 作为 user/tool 消息里的图像 part 塞回上下文。
两条实现路线
路线 A:原生多模态 LLM(VLM in the loop)
做法: 每轮 think 调用 Vision-Language Model(如 GPT-4o、Claude、Gemini),messages 里带 image_url / base64 part,模型在 同一 forward 里做视觉理解 + 选 tool / 生成答案。
messages = [
{"role": "user", "content": [
{"type": "text", "text": "这张图里报错原因是什么?"},
{"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}}
]}
]
→ llm.ask_tool(messages, tools=...) # 可继续 ReAct
| 优点 | 缺点 |
|---|---|
| 链路短、语义对齐好 | 图片 token 贵、分辨率/张数受限 |
| 适合「读一张图答一问」 | 细粒度定位(小按钮)仍可能 hallucinate |
适用: 单据识别、UI 大致理解、图表问答、少步 ReAct。
路线 B:感知工具化(Text Agent + 专用感知 Tool)
做法: 主 Agent 仍是文本 LLM;看交给专用工具,观察以 文本或压缩描述 回灌。
| 工具 | 产出 | 典型场景 |
|---|---|---|
screenshot / browser_screenshot | 截图 → VLM 或 OCR | GUI Agent、Web 自动化 |
ocr / pdf_extract | 纯文本 | 扫描件、合同 |
asr | transcript | 语音指令 |
object_detect / crop | 框 + 裁剪图 | 先定位再细看 |
image_caption | 短描述 | 降 token,进摘要 |
think → screenshot(url) → act
observe: "页面有登录框、错误提示 Invalid password"
think → fill_form(...) → act
observe: 新 screenshot
| 优点 | 缺点 |
|---|---|
| 主模型可换便宜文本模型 | 多一步,错误会累积 |
| 感知可换专用小模型 | 截图→OCR 丢布局信息 |
适用: Computer Use、Browser Use(OpenManus 默认 MCP Browser Use)、长文档、成本敏感。
怎么选(面试加分)
| 信号 | 倾向 |
|---|---|
| 单图 QA、步数少 | 原生 VLM |
| 多步 GUI、要反复看屏幕 | 截图工具 + VLM/OCR 交替 |
| 像素级坐标点击 | 截图 + grounding 模型或专用 UI 模型 |
| token 预算紧 | OCR/ caption 先压缩再推理 |
多模态推理的常见模式
1. 直接视觉推理(Single-shot VLM)
用户给图 + 问题 → VLM 一次答,或 VLM 在 ReAct 第一轮就调 Terminate。
适合分类、描述、简单 VQA;Agent 价值在后续还要调工具改状态。
2. 分解式(Perceive → Reason → Act)
图/PDF → OCR/VLM 抽结构化字段 → 文本 LLM 推理 → 调业务 API
视觉误差隔离在感知层;业务规则用文本推理更稳。发票、表单、质检报告常见。
3. 观察驱动 GUI 循环(Look-Act-Look)
screenshot → 模型输出 click(x,y) / browser_exec → 新 screenshot → …
推理体现在 每屏状态理解 + 下一步动作;和 [Agent Loop 死循环治理](/docs/ai/Agent/面试/Agent Loop 死循环治理) 强相关——截图不变却反复 click 是典型 loop。
4. 多模态 RAG
文档库含 图+文(手册插图、幻灯片):索引时可 caption 图再 embed,或 ColPali 类 页面向量;检索命中后再 VLM 读原图生成。
编排仍是 Agent/RAG 图;模态差异在索引与 retriever。
5. 多 Agent 分工
| Agent | 职责 |
|---|---|
| Vision | 看图出结构化观察 |
| Planner | 文本规划 |
| Executor | 调 API / 浏览器 |
A2A 可互派任务;单进程里也可「Vision tool 实为子调用」。
Memory 里怎么存多模态观察
| 做法 | 说明 |
|---|---|
| 原图进 history | 最准;token 爆炸,需限张数/降分辨率 |
| 只存 caption/OCR | 省 token;丢细节,关键图保留原图 |
| 外链 + 摘要 | 图存对象存储,上下文只留 URL 与一句话 |
| 工具消息带 image part | OpenManus:Message.tool_message + 追加 user_message(base64_image=...) |
跨轮任务:工作记忆管当前屏/当前页;别把整个截图序列当长期记忆——见 大模型长短期记忆机制。
生产注意点
| 点 | 说明 |
|---|---|
| Token / 成本 | 每轮重传大图极贵;降分辨率、限历史截图数、用 caption 替代 |
| 幻觉 | 小字、颜色、计数易错;关键字段 OCR 双验或人审 |
| 延迟 | VLM + 截图 + 浏览器串行;墙钟 timeout 比文本 Agent 更紧 |
| 隐私 | 截图含 PII;脱敏、租户隔离、日志禁存原图 |
| 评测 | 除最终答案,还要评 是否调对视觉工具、坐标/字段对不对 |
常见坑
| 坑 | 缓解 |
|---|---|
| 每步全分辨率截图进 context | 压缩、只保留最近 1~2 张 |
| 只用 VLM 不验证 OCR 数字 | 金额/单号走 OCR + 规则 |
| 文本 Agent 接图却未注入 image part | API 格式错误等于盲 |
| GUI loop 不检测画面是否变化 | 结合 [Agent Loop 死循环治理](/docs/ai/Agent/面试/Agent Loop 死循环治理) |
面试参考答法(60~90 秒)
多模态 Agent 的推理还是 ReAct:感知、规划、行动、观察,只是感知和观察里有图或音。
实现上两条路:一是原生 VLM 把 image part 和 text 一起送进
ask_tool,在 loop 里直接视觉推理并选工具;二是感知工具化——screenshot、OCR、ASR 把模态转成文本或新截图,再回灌 memory,主模型可以是文本 LLM。GUI 任务常用 look-act-look:截屏理解界面,输出 click 或 browser 操作,再看新截图,直到完成。工程上要控截图 token、限制历史图像张数,关键数字用 OCR 校验,并和文本 Agent 一样设 max_steps、防同屏重复操作。评测除了答案,还要看视觉工具链和轨迹是否正确。
延伸阅读
| 篇 | 关系 |
|---|---|
| Agent 核心概念与架构 | 感知-规划-行动 |
| [OpenManus 概览与实现原理](/docs/ai/Agent/面试/OpenManus 概览与实现原理) | browser_screenshot、vision profile |
| 工具调用与评测实践 | tool 观察回灌 |
| Token 计算与成本 | 多模态 token 计费 |
面试速记
- 结构不变: 仍是 ReAct;多模态体现在感知/观察编码。
- 两路线: 原生 VLM in loop vs 感知工具(screenshot/OCR/ASR)→ 文本或新图回灌。
- GUI: look-act-look;截图是观察,要防同屏死循环。
- Memory: 限张数/降分辨率/caption;原图与摘要权衡 token。
- 生产: 幻觉校验、隐私、多模态 token 成本、轨迹评测。